Technical Q&A QA1343
Audio Unit Resizing


Q: Audio Unit プラグインと Audio Unit ホストは、Audio Unit の UI のリサイズをどのようにネゴシエートしますか?

A: Audio Unit プラグインによっては、ホストしているアプリケーション内の UI をリサイズできるものもあります。このような変更は、各 Audio Unit プラグイン内の、内部パラメータステータス(および、その他多くの UI 要素)に基づいて行うことができます。

プラグインは、そのビューのウインドウを直接リサイズしてはなりませんが、プラグインのビューが最初に作成されるときにホストに返されるコントロールを代わりにリサイズします。コントロールの境界の変更を検知し、Audio Unit のビューをアプリケーションの領域内に収まるようにリサイズするのはホストの役目です。

Audio Unit の Carbon コントロールは、AudioUnitCarbonViewCreate を使ってビューが最初に作成されるときに、ホストによって受け取られます。ホストは、Audio Unit のビューの矩形領域への変更を知るために、AudioUnitCarbonViewSetEventListenerkEventControlBoundsChanged イベントを使ってリスナーを作成する必要があります。こうしておけば、Audio Unit のビューのサイズを変更するには、ビューのコントロールをリサイズするだけで済みます。ホストは、このコントロールへの変更を検知するように設定されています。kEventControlBoundsChanged イベントを受け取ると、ホストはアプリケーション内の Auido Unit ウインドウをリサイズできます。



注意:
ホストは、コントロール矩形領域の変更通知を、サイズ (0, 0) と突き合わせて確認する必要があります。いくつかの Auido Unit は、新たに決定したサイズを設定する前の一時的な状態として、そのルートコントロールを (0, 0) に一時的にリサイズします。この場合、ホストは、このコントロール矩形領域の変更通知を無視する必要があります。




[2004 年 3 月 22 日]